from .db import CONF

class celeryconfig():
    # 详细配置查看官方文档： http://docs.celeryproject.org/en/latest/userguide/configuration.html

    #broker(消息中间件来接收和发送任务消息)
    broker_url = CONF.REDIS_CELERY
    #backend(存储worker执行的结果) 可以存储在不同的db
    result_backend = CONF.REDIS_CELERY

    #设置时间参照，不设置默认使用的UTC时间
    timezone = 'Asia/Shanghai'
    #指定任务的序列化
    task_serializer='json'
    #指定执行结果的序列化
    result_serializer='json'
    #配置每个任务的最多执行时间，超过则杀掉  这个时间需要经过测试再调整
    task_time_limit=60
    # 配置结果在redis中存放的时间，单位为s，存储10分钟吧，后续再调
    result_expires=30

    worker_redirect_stdouts = False

    ONCE = {
        "backend":"celery_once.backends.Redis",
        'settings_prefix': 'once',
        "settings":{
            "url": CONF.REDIS_CELERY,
            "default_timeout":60
        }
    }
    once_backend = 'celery_once.backends.Redis'
    once_redis_url = CONF.REDIS_CELERY
    once_default_timeout = 60

    ONCE_BACKEND = 'celery_once.backends.Redis'
    ONCE_REDIS_URL = CONF.REDIS_CELERY
    ONCE_DEFAULT_TIMEOUT = 60


    # 这个是为了兼容go序列化
    task_serializer = "json"
    # accept_content='json'
    # result_serializer='json'
    enable_utc = True
    task_protocol = 1

    # 时间间隔用质数分开，减少同时触发的概率
    beat_schedule = {
            'flush-iptables':{
                    'task': 'flush_iptables', # 这里不要写全路径
                    'schedule': 61,
            },
            'bot-keepalive':{
                    'task': 'botnet_ws_keepalive', # 这里不要写全路径
                    'schedule': 59,
            },
            'bot-refresh-online':{
                    'task': 'refresh_online', # 刷新数据库中节点的在线状态
                    'schedule': 307,
            },
        }

